package cn.getech.data.development.model.vo;

import cn.getech.data.development.constant.JobLogTypeEnum;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Map;

/**
 * @ClassName WorkFlowLogVO
 * @Description TODO
 * @Author Getech
 * @Date 2021/1/15 14:16
 */
@Data
public class WorkFlowLogVO implements Serializable {


    /**
     * 编号
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 运行编号
     */
    private Long num;
    /**
     * 运行参数
     */
    private String params;
    /**
     * 运行状态
     */
    private Integer state;
    /**
     * 运行耗时 单位ms
     */
    private Long cost;
    /**
     * 运行耗时 单位 s
     */
    @TableField(exist = false)
    private String costSecond;
    /**
     * 开始运行的时间
     */
    @TableField("begin_time")
    private Date beginTime;

    /**
     * 开始运行的时间
     */
    @TableField("end_time")
    private Date endTime;
    /**
     * 运行的日志信息
     */
//    private String log;
    /**
     * 任务节点信息编号
     */
    @TableField("job_info_id")
    private Integer jobInfoId;

    /**
     * 运行状态
     */
    @TableField(exist = false)
    private String  stateName;

    /**
     * 任务节点关系
     */
    @TableField("node_params")
    private String nodeParams;

    /**
     * 任务运行时对应oozieId
     */
    @TableField("oozie_job_id")
    private String oozieJobId;

    /**
     * 任务运行日志
     */
    @TableField("log")
    private String log;

    @TableField("job_dep_id")
    private Long jobDepId;

    @TableField(exist = false)
    private Integer jobLogType = JobLogTypeEnum.WORKFLOWDEP.getCode();

    /**
     * 任务的运行状态
     */
    @TableField("oozie_status")
    private String oozieStatus;


    /**
     * 最近一次运行的类型 -1：定时调度、-2：循环调度、id：手动操作的人id
     */
    @TableField("run_type")
    private Integer runType;

    @TableField(exist = false)
    private String depName;


    /**
     * 开发任务中各个节点的运行状态
     */
    @TableField(exist = false)
    private Map<String,Integer> nodeStates;

    /**
     * 菜单id
     */
    @TableField(exist = false)
    private Long workMenuId;


    @TableField(exist = false)
    private String  projectName;

    @TableField(exist = false)
    private Long createPer;

    @TableField(exist = false)
    private String  createPerName;
    @TableField(exist = false)
    private String name;
    //0：手动运行、1：定时调度、2：循环调度
    @TableField(exist = false)
    private Integer  lastRunType;

    public Integer getLastRunType() {
        //0：手动运行、1：定时调度、2：循环调度
        if (runType != null) {
            lastRunType = runType > 0 ? 0 : runType == -1 ? 1 : 2;
        } else {
            lastRunType = 0;
        }
        return lastRunType;
    }

    /**
     *  调度队列
     */
    private String queueName="root.user.hdfs";


    /**
     *  循环周期
     */
    private  String cronName="日周期";


    /**
     * 循环方式
     */
    private  String cycleWay;


    /**
     * 调度方式
     */
    private  String sheduleWay;
}
